package com.xueyi.aixihu.service;

import com.xueyi.aixihu.entity.po.DtUsers;
import com.xueyi.aixihu.entity.vo.*;
import com.xueyi.aixihu.reqeust.*;
import com.xueyi.aixihu.reqeust.base.PageLimitReq;
import com.xueyi.aixihu.response.DtUsersLoginResponse;
import com.xueyi.aixihu.response.DtUsersResponse;
import com.xueyi.aixihu.response.base.BaseResponse;

import java.util.List;

/**
 * @author lvyi
 * @date : 2022/8/16
 * @Description : dt_users表的service层
 */
public interface DtUsersService {

    /**
     * 用户登陆
     *
     * @param phone
     * @param password
     * @return
     */
    DtUsersLoginResponse loginDtUsers(String phone, String password);

    /**
     * 用户退出登录
     */
    void exitDtUsers();

    /**
     * 根据姓名或手机号、用户状态搜索用户
     *
     * @param dtUsersReq
     * @return 角色列表
     */
    DtUsersResponse findDtUsers(DtUsersReq dtUsersReq);

    /**
     * 禁用或者删除用户
     *
     * @param dtUsersReq
     */
    BaseResponse<Boolean> delOrDisDtUsers(DtUsersReq dtUsersReq);

    /**
     * 修改用户密码
     *
     * @param password
     */
    BaseResponse<Boolean> updatePassword(String password, Integer id);

    /**
     * 新增后台用户
     *
     * @param dtUsersAddReq
     */
    BaseResponse<Boolean> addDtUsers(DtUsersAddReq dtUsersAddReq);

    /**
     * 修改后台用户信息
     *
     * @param dtUsersUpdateReq
     */
    BaseResponse<Boolean> updateDtUsers(DtUsersUpdateReq dtUsersUpdateReq);

    /**
     * 修改时回显的数据
     *
     * @param id 用户id
     * @return
     */
    BaseResponse<DtUsersSelectVo> findDtUsersById(Integer id);

    /**
     * 查询出各种类型的人数
     *
     * @return
     */
    BaseResponse<DtUsersNumberVo> findSize();

    /**
     * 用户类型  1：正常 0：游客
     *
     * @return
     */
    BaseResponse<List<SelectVo>> findUsertype();

    /**
     * 登录日志
     *
     * @return
     */
    BaseResponse<List<DtUsersLogVo>> findDtUsersLoginLog(LoginLogReq loginLogReq);

    /**
     * 首页的平台日志
     *
     * @return
     */
    BaseResponse<List<DtUsersPlatformLogVo>> findDtUsersPlatformLog(DtUsersPlatformReq dtUsersPlatformReq);

    /**
     * 用户修改自己的密码
     *
     * @param updatePasswordByLoginUserReq
     */
    BaseResponse<Boolean> updatePasswordByLoginUser(UpdatePasswordByLoginUserReq updatePasswordByLoginUserReq);


    /**
     * 修改个人信息里的头像以及用户名
     *
     * @param updateInfoByLoginUserReq
     */
    BaseResponse<Boolean> updateInfoByLoginUser(UpdateInfoByLoginUserReq updateInfoByLoginUserReq);

    /**
     * 查询个人信息(头像以及用户名)
     *
     * @param id
     * @return
     */
    BaseResponse<DtUsers> findInfoByLoginUser();

    /**
     * 根据用户id解除绑定微信
     *
     * @param id 用户id
     */
    BaseResponse<Boolean> unbindWeChat(Integer id);


}
